package com.fightingFish.user.dao;

import com.fightingFish.user.bean.Record;
import com.fightingFish.user.bean.User;

import java.util.ArrayList;

public interface UserDao {

    /**
     * 方法描述：从User表中查询电话号码是否存在
     *
     * @param phone 查询的电话号码
     * @return true ：存在
     * false ：不存在
     */
    boolean queryPhoneFromUser(String phone);


    /**
     * 方法描述：从temp表中查询电话号码是否存在
     *
     * @param phone 查询的电话号码
     * @return true ：存在
     * false ：不存在
     */
    boolean queryPhoneFromTemp(String phone);

    /**
     * 方法描述：修改临时验证码数据库中的验证码
     *
     * @param mark
     * @param phone
     * @param veriCode
     * @return
     */
    boolean insertVeriCode(String mark, String phone, String veriCode);


    /**
     * 方法描述：修改temp表中验证码
     *
     * @param phone
     * @param veriCode
     * @return
     */
    boolean updateTempVeriCode(String phone, String veriCode);

    /**
     * 向temp表中添加手机号以及验证码信息
     *
     * @param phone
     * @param veriCode
     * @return
     */
    boolean insertTempVeriCode(String phone, String veriCode);


    /**
     * 修改user表中的验证码信息
     *
     * @param phone
     * @param veriCode
     * @return
     */
    boolean updateUserVeriCode(String phone, String veriCode);


    /**
     * 用户手机号注册
     * @param phone
     * @param veriCode
     * @return
     */
    boolean phoneRegister(String phone, String veriCode);


    /**
     * 手机号登陆
     * @param phone
     * @return
     */
    User phoneLogin(String phone, String veriCode);

    /**
     * 通过用户ID查询用户个人信息
     */
    User selectInfoByid(Integer userId);

    /**
     *  用户可以修改个人的基本信息
     * （密码，头像，昵称，性别，个性签名，手机号，邮箱）
     *  返回一个布尔值判断是否修改成功
     */
    boolean updateInfo(Integer userId, String photoImgUrl, String nickName, String sex, String signInfo, String phone, String email);

    /**
     *  通过用户id找到该用户充值鱼币
     *  返回一个充值后的金额
     */
    Double rechargeBalance(Integer userId, Double investMoney);

    /**
     *  通过用户id找到该用户的消费记录
     */
    ArrayList<Record> selectRecordByid(Integer userId);

    /**
     * 通过主播id找到该主播收入记录
     *
     * @param
     * @return
     */
    ArrayList<Record> selectRecordByAnchodId(Integer userId);

    /**
     * 方法概述：  查询余额
     * @param phone
     * @return
     */
    Double getPrice(String phone);

    /**
     * 方法概述;  修改用户余额
     * @param phone
     * @param is
     */
    void upDatePrice(String phone, Double is);

    /***
     * 方法概述：  增加主播余额
     * @param balance 当前余额
     * @param userId 当前主播ID
     */
    void upDateAnchor(Double balance, int userId);

    /**
     * 用户签到
     * @param userId
     * @return
     */
    boolean signDay(int userId);
}
